TODO Here I gonna talk about the datas

Link about it: http://www2.camara.leg.br/transparencia/acesso-a-informacao/copy_of_perguntas-frequentes/cota-para-o-exercicio-da-atividade-parlamentar

For this lab we gonna need the following package to be installed

install.packages("ggplot2")
install.packages("dplyr")
install.packages("tidyr")
install.packages("tidyverse")
install.packages("scales")
install.packages("plotly")

Loading the libraries

 library(ggplot2)
 library(dplyr)
 library(tidyr)
 library(tidyverse)
 library(scales)
 library(plotly)

Set up the workspace folder

setwd("~/git/data-analysis/Lab01")

Loading the data

data <- read_csv(("data/dadosCEAP.csv"))
montly_limit <- read_csv(("data/limiteMensalCEAP.csv"))
data$valorGlosa <- as.numeric(sub(",", ".", data$valorGlosa, fixed = TRUE)) 
data %>% 
  full_join(montly_limit, by=c("sgUF" = "UF")) -> data

Which deputies have expeended more money from CEAP? Which are the most economic?

Here we have two graphics that show the top 10 deputies that have expeended more money and the top 10 more economic.

Here we can see 10 deputies that have expeend more money which are:

  • Edio Lopes: R$ 1648666
  • Rocha: R$ 1526395
  • Abel Mesquita Junior: R$ 1470778
  • Alan Rick: R$ 1464612
  • Jhonatan de Jesus: R$ 1463513

Now those are the ones who have expeended less money:

  • Camilo Cola: R$ 0.62
  • Eliseu Padilha: R$ 5.31
  • Marcio Monteiro: R$ 14.18
  • Marcelo Almeida: R$ 26.16
  • Renan Filho: R$ 35.51

Which are the states that its deputies have more expenses abroad? Which are the states that its deputies have expended less abroad?

As we can see the hilight is São Paulo which have been the most expenses to abroad whit R$ 102366.56 followed by Minas Gerais whit R$ 79767.77 and Pernambuco whit R$ 70915.94. And alse we hilight Maranhão that have been expended only R$ 40.99 and Paraíba whit R$ 2288.29..

Which are the political groups that its deputies most use CEAP in the state of Paraíba? Which are the less use it?

PMDB is the group that most uses CEP whit a value of R$ 4011621.34 followed by PR whit R$ 1434506.56

Which are the deputies, by state, that most pass the CEAP limit??

Our data show that at least one deputie have passed his state CEAP limit, but ther are some most frequent, which are:

  • Felipe Bornier
  • Domingos Neto
  • Jandira Feghali
  • Paulo Abi-Ackel
  • Rômulo Goveia

Which are the states whit more expense in airline tickets?

We are going to look only to expenses whit the description about airline tickes, once whit that information we will sum all values by states.

So what we’ve got it São Paulo is the state that expend more money then the other whit ailine ticket, and the total expeended was about R$ 23171817.73 and Rio de Janeiro whit R$16755188.64

Chose three groups and answer: which are the most used expenses in CEAP by the deputies form those groups?

Gonna chose PMDB, PT and DEM and take a close look in its expenses.

expense_most_required %>%
  plot_ly(y = ~reorder(tipoDespesa,expense), x = ~expense, type = "bar", color = ~tipoDespesa) %>%
  layout(title = "Expenses by the groups PMDB, PT and DEM",
         yaxis = list(title = "Expenses"),
         xaxis = list (title = "Total expendes in R$"))
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors
n too large, allowed maximum for palette Set2 is 8
Returning the palette you asked for with that many colors

12 diferentes types of expenses and as far we can see the most expensice is airline tickets whit R$ 47353189.62 and very near we got deputies activities publicities whit R$ 40119480.33

LS0tCnRpdGxlOiAiRGVwdXRpZXMgRXhwZW5kaXR1cmVzIEFuYWx5c2lzOiBPdXIgUXVlc3Rpb25zIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojVE9ETyBIZXJlIEkgZ29ubmEgdGFsayBhYm91dCB0aGUgZGF0YXMgCkxpbmsgYWJvdXQgaXQ6IGh0dHA6Ly93d3cyLmNhbWFyYS5sZWcuYnIvdHJhbnNwYXJlbmNpYS9hY2Vzc28tYS1pbmZvcm1hY2FvL2NvcHlfb2ZfcGVyZ3VudGFzLWZyZXF1ZW50ZXMvY290YS1wYXJhLW8tZXhlcmNpY2lvLWRhLWF0aXZpZGFkZS1wYXJsYW1lbnRhciAKCkZvciB0aGlzIGxhYiB3ZSBnb25uYSBuZWVkIHRoZSBmb2xsb3dpbmcgcGFja2FnZSB0byBiZSBpbnN0YWxsZWQKYGBge3J9Cmluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKQppbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCmluc3RhbGwucGFja2FnZXMoInRpZHlyIikKaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKaW5zdGFsbC5wYWNrYWdlcygic2NhbGVzIikKaW5zdGFsbC5wYWNrYWdlcygicGxvdGx5IikKYGBgCgpMb2FkaW5nIHRoZSBsaWJyYXJpZXMKYGBge3J9CiBsaWJyYXJ5KGdncGxvdDIpCiBsaWJyYXJ5KGRwbHlyKQogbGlicmFyeSh0aWR5cikKIGxpYnJhcnkodGlkeXZlcnNlKQogbGlicmFyeShzY2FsZXMpCiBsaWJyYXJ5KHBsb3RseSkKCmBgYAoKU2V0IHVwIHRoZSB3b3Jrc3BhY2UgZm9sZGVyCgpgYGB7cn0Kc2V0d2QoIn4vZ2l0L2RhdGEtYW5hbHlzaXMvTGFiMDEiKQpgYGAKCkxvYWRpbmcgdGhlIGRhdGEKCmBgYHtyfQpkYXRhIDwtIHJlYWRfY3N2KCgiZGF0YS9kYWRvc0NFQVAuY3N2IikpCm1vbnRseV9saW1pdCA8LSByZWFkX2NzdigoImRhdGEvbGltaXRlTWVuc2FsQ0VBUC5jc3YiKSkKZGF0YSR2YWxvckdsb3NhIDwtIGFzLm51bWVyaWMoc3ViKCIsIiwgIi4iLCBkYXRhJHZhbG9yR2xvc2EsIGZpeGVkID0gVFJVRSkpIApkYXRhICU+JSAKICBmdWxsX2pvaW4obW9udGx5X2xpbWl0LCBieT1jKCJzZ1VGIiA9ICJVRiIpKSAtPiBkYXRhCmBgYAoKIyMjV2hpY2ggZGVwdXRpZXMgaGF2ZSBleHBlZW5kZWQgbW9yZSBtb25leSBmcm9tIENFQVA/IFdoaWNoIGFyZSB0aGUgbW9zdCBlY29ub21pYz8KCjxwPkhlcmUgd2UgaGF2ZSB0d28gZ3JhcGhpY3MgdGhhdCBzaG93IHRoZSB0b3AgMTAgZGVwdXRpZXMgdGhhdCBoYXZlIGV4cGVlbmRlZCBtb3JlIG1vbmV5IGFuZCB0aGUgdG9wIDEwIG1vcmUgZWNvbm9taWMuPC9wPgoKYGBge3J9CgpncmVhdGVyX2V4cGVuc2VzIDwtIGRhdGEgJT4lIAogIGdyb3VwX2J5KG5vbWVQYXJsYW1lbnRhcikgJT4lCiAgZmlsdGVyKHZhbG9yTMOtcXVpZG8gPj0gMCkgJT4lCiAgc3VtbWFyaXNlKGRlcF9leHBlbnNlcyA9IHN1bSh2YWxvckzDrXF1aWRvKSkKCmdyZWF0ZXJfZXhwZW5zZXMgPC0gZ3JlYXRlcl9leHBlbnNlc1tvcmRlcihncmVhdGVyX2V4cGVuc2VzJGRlcF9leHBlbnNlcyksXQoKZmlsdGVyX2V4cGVuc2llcyA8LSByYmluZCh0YWlsKGdyZWF0ZXJfZXhwZW5zZXMsIDEwKSkKZ2dwbG90KGZpbHRlcl9leHBlbnNpZXMsIGFlcyh5ID0gZGVwX2V4cGVuc2VzLCB4ID0gcmVvcmRlcihub21lUGFybGFtZW50YXIsIGRlcF9leHBlbnNlcykpLCB0b3Bfbih4LCAxMCkpICsgb3JkZXIoZGVjcmVhc2luZyA9IFRSVUUpICsgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKSArCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArCiAgbGFicyh0aXRsZSA9ICJUaGUgRGVwdXRpZXMgVGhhdCBIYXZlIEV4cGVlbmRlZCBNb3JlIE1vbmV5IiwKICAgICAgIHggPSAiRGVwdXRpZXMiLCB5ID0gIkV4cGVuc2VzIGluIFIkIikgKwogIGNvb3JkX2ZsaXAoKSAKCgpgYGAKCjxwPkhlcmUgd2UgY2FuIHNlZSAxMCBkZXB1dGllcyB0aGF0IGhhdmUgZXhwZWVuZCBtb3JlIG1vbmV5IHdoaWNoIGFyZTo8L3A+Cgo8dWw+CiAgPGxpPkVkaW8gTG9wZXM6IFIkIDE2NDg2NjYgPC9saT4KICA8bGk+Um9jaGE6IFIkIDE1MjYzOTU8L2xpPgogIDxsaT5BYmVsIE1lc3F1aXRhIEp1bmlvcjogUiQgMTQ3MDc3ODwvbGk+CiAgPGxpPkFsYW4gUmljazogUiQgMTQ2NDYxMjwvbGk+CiAgPGxpPkpob25hdGFuIGRlIEplc3VzOiBSJCAxNDYzNTEzPC9saT4KPC91bD4KCgpgYGB7cn0KZmlsdGVyX2V4cGVuc2llc19taW5vcnMgPC0gcmJpbmQoaGVhZChncmVhdGVyX2V4cGVuc2VzLCAxMCkpCmdncGxvdChmaWx0ZXJfZXhwZW5zaWVzX21pbm9ycywgYWVzKHkgPSBkZXBfZXhwZW5zZXMsIHggPSByZW9yZGVyKG5vbWVQYXJsYW1lbnRhciwgZGVwX2V4cGVuc2VzKSksIHRvcF9uKHgsIDEwKSkgKyBvcmRlcihkZWNyZWFzaW5nID0gVFJVRSkgKyBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gY29tbWEpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICBsYWJzKHRpdGxlID0gIlRoZSBEZXB1dGllcyBUaGF0IEhhdmUgRXhwZWVuZGVkIExlc3MgTW9uZXkiLAogICAgICAgeCA9ICJEZXB1dGllcyIsIHkgPSAiRXhwZW5zZXMgaW4gUiQiKSArCiAgY29vcmRfZmxpcCgpIApgYGAKPHA+Tm93IHRob3NlIGFyZSB0aGUgb25lcyB3aG8gaGF2ZSBleHBlZW5kZWQgbGVzcyBtb25leTo8L3A+Cgo8dWw+CiAgPGxpPkNhbWlsbyBDb2xhOiBSJCAwLjYyIDwvbGk+CiAgPGxpPkVsaXNldSBQYWRpbGhhOiBSJCA1LjMxPC9saT4KICA8bGk+TWFyY2lvIE1vbnRlaXJvOiBSJCAxNC4xODwvbGk+CiAgPGxpPk1hcmNlbG8gQWxtZWlkYTogUiQgMjYuMTY8L2xpPgogIDxsaT5SZW5hbiBGaWxobzogUiQgMzUuNTE8L2xpPgo8L3VsPgoKCiMjI1doaWNoIGFyZSB0aGUgc3RhdGVzIHRoYXQgaXRzIGRlcHV0aWVzIGhhdmUgbW9yZSBleHBlbnNlcyBhYnJvYWQ/IFdoaWNoIGFyZSB0aGUgc3RhdGVzIHRoYXQgaXRzIGRlcHV0aWVzIGhhdmUgZXhwZW5kZWQgbGVzcyBhYnJvYWQ/CgpgYGB7cn0KZXhwZW5kaW5nX2Fib3JkIDwtIGRhdGEgJT4lCiAgZ3JvdXBfYnkoc2dVRikgJT4lCiAgZmlsdGVyKHRpcG9Eb2N1bWVudG8gPT0gMiwgdmFsb3JMw61xdWlkbyA+PSAwKSAlPiUKICBzdW1tYXJpc2UoZXhwZW5zZSA9IHN1bSh2YWxvckzDrXF1aWRvKSkKCiNleHBlbmRpbmdfYWJvcmQkaWQgPC0gc2VxLmludChucm93KGV4cGVuZGluZ19hYm9yZCkpCgpleHBlbmRpbmdfYWJvcmQgPC0gZXhwZW5kaW5nX2Fib3JkW29yZGVyKGV4cGVuZGluZ19hYm9yZCRleHBlbnNlKSxdCgpleHBlbmRpbmdfYWJvcmQkc2dVRiA8LSBmYWN0b3IoZXhwZW5kaW5nX2Fib3JkJHNnVUYsIGxldmVscyA9IGV4cGVuZGluZ19hYm9yZCRzZ1VGW29yZGVyKGV4cGVuZGluZ19hYm9yZCRleHBlbnNlKV0pCmdncGxvdChleHBlbmRpbmdfYWJvcmQsIGFlcyh4ID0gc2dVRiwgeSA9IGV4cGVuc2UpKSArIHRoZW1lX2J3KCkgKyBnZW9tX2JhcihzdGF0ID0gImlkZW50aXR5IikgKyAKICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gY29tbWEpICsKICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsKICBsYWJzKHRpdGxlID0gIlRoZSBEZXB1dGllcyBUaGF0IEhhdmUgRXhwZWVuZGVkIExlc3MgTW9uZXkgQWJyb2FkIiwKICAgICAgIHggPSAiRGVwdXRpZXMiLCB5ID0gIkV4cGVuc2VzIGluIFIkIikgKwogIGNvb3JkX2ZsaXAoKSAKCmBgYApBcyB3ZSBjYW4gc2VlIHRoZSBoaWxpZ2h0IGlzIFPDo28gUGF1bG8gd2hpY2ggaGF2ZSBiZWVuIHRoZSBtb3N0IGV4cGVuc2VzIHRvIGFicm9hZCB3aGl0IFIkIDEwMjM2Ni41NiBmb2xsb3dlZCBieSBNaW5hcyBHZXJhaXMgd2hpdCBSJCA3OTc2Ny43NwphbmQgUGVybmFtYnVjbyB3aGl0IFIkIDcwOTE1Ljk0LiBBbmQgYWxzZSB3ZSBoaWxpZ2h0IE1hcmFuaMOjbyB0aGF0IGhhdmUgYmVlbiBleHBlbmRlZCBvbmx5IFIkIDQwLjk5IGFuZCBQYXJhw61iYSB3aGl0IFIkIDIyODguMjkuLgoKIyMjV2hpY2ggYXJlIHRoZSBwb2xpdGljYWwgZ3JvdXBzIHRoYXQgaXRzIGRlcHV0aWVzIG1vc3QgdXNlIENFQVAgaW4gdGhlIHN0YXRlIG9mIFBhcmHDrWJhPyBXaGljaCBhcmUgdGhlIGxlc3MgdXNlIGl0PwoKCmBgYHtyfQpleHBlbnNlX2J5X2dyb3VwIDwtIGRhdGEgJT4lCiAgZ3JvdXBfYnkoc2dQYXJ0aWRvKSAlPiUKICBmaWx0ZXIodmFsb3JMw61xdWlkbyA+PSAwLCBzZ1VGID09ICJQQiIpICU+JQogIHN1bW1hcmlzZShleHBlbnNlID0gc3VtKGFicyh2YWxvckzDrXF1aWRvKSkpCgpleHBlbnNlX2J5X2dyb3VwJHNnVUYgPC0gZmFjdG9yKGV4cGVuc2VfYnlfZ3JvdXAkc2dQYXJ0aWRvLCBsZXZlbHMgPSBleHBlbnNlX2J5X2dyb3VwJHNnUGFydGlkb1tvcmRlcihleHBlbnNlX2J5X2dyb3VwJGV4cGVuc2UpXSkKZ2dwbG90KGV4cGVuc2VfYnlfZ3JvdXAsIGFlcyh5ID0gZXhwZW5zZSwgeCA9IHJlb3JkZXIoc2dQYXJ0aWRvLCBleHBlbnNlKSkpICsgb3JkZXIoZGVjcmVhc2luZyA9IFRSVUUpICsgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKSArCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArCiAgbGFicyh0aXRsZSA9ICJHcnVwcyBFeHBlbnNlcyIsCiAgICAgICB4ID0gIkdydXBzIiwgeSA9ICJFeHBlbnNlcyBpbiBSJCIpICsKICBjb29yZF9mbGlwKCkgCmBgYAo8cD5QTURCIGlzIHRoZSBncm91cCB0aGF0IG1vc3QgdXNlcyBDRVAgd2hpdCBhIHZhbHVlIG9mIFIkIDQwMTE2MjEuMzQgZm9sbG93ZWQgYnkgUFIgd2hpdCBSJCAxNDM0NTA2LjU2PC9wPgoKIAojIyNXaGljaCBhcmUgdGhlIGRlcHV0aWVzLCBieSBzdGF0ZSwgdGhhdCBtb3N0IHBhc3MgdGhlIENFQVAgbGltaXQ/PwoKYGBge3J9CgpsaW1pdF9leGNlZWRlZCA8LSBkYXRhICU+JQogIG11dGF0ZShhbm8gPSAgc3Vic3RyKGRhdGFFbWlzc2FvLCAxLCA0KSkgJT4lCiAgbXV0YXRlKG1lcyA9ICBzdWJzdHIoZGF0YUVtaXNzYW8sIDYsIDcpKSAlPiUKICBncm91cF9ieShub21lUGFybGFtZW50YXIsIGxpbWl0ZV9tZW5zYWwsIG1lcywgYW5vKSAlPiUKICBmaWx0ZXIodmFsb3JMw61xdWlkbyA+PSAwKSAlPiUKICBzdW1tYXJpc2UoZXhwZW5zZSA9IHN1bSh2YWxvckzDrXF1aWRvKSkgJT4lCiAgZmlsdGVyKGV4cGVuc2UgPiBsaW1pdGVfbWVuc2FsKQoKbGltaXRfZXhjZWVkZWQgPC0gbGltaXRfZXhjZWVkZWQgJT4lCiAgZ3JvdXBfYnkobm9tZVBhcmxhbWVudGFyKSAlPiUKICBzdW1tYXJpc2UodGltZXNfZXhjZWVkZWQgPSBuKCkpCgpsaW1pdF9leGNlZWRlZCA8LSBsaW1pdF9leGNlZWRlZFtvcmRlcihsaW1pdF9leGNlZWRlZCR0aW1lc19leGNlZWRlZCwgZGVjcmVhc2luZyA9IFRSVUUpLF0KbGltaXRfZXhjZWVkZWQkaW5kZXhHYXN0byA8LSBmYWN0b3IobGltaXRfZXhjZWVkZWQkbm9tZVBhcmxhbWVudGFyLCBsZXZlbHMgPSBsaW1pdF9leGNlZWRlZCRub21lUGFybGFtZW50YXIpCgpsaW1pdF9leGNlZWRlZCAlPiUKICBwbG90X2x5KHg9IH5pbmRleEdhc3RvLCB5PSB+dGltZXNfZXhjZWVkZWQsdHlwZT0gInNjYXR0ZXIiLCBtb2RlPSAibGluZXMrbWFya2VycyIpICU+JQogIGxheW91dCh0aXRsZT0iTnVtYmVyIG9mIHRpbWUgdGhlIGRlcHV0aWVzIGhhdmUgZXhjZWVkZWQgdGhlIG1vbnRobHkgbGltaXQgb2YgZXhwZW5zZXMiLCAKICAgICAgICAgeGF4aXM9bGlzdCh0aXRsZT0iRGVwdXRpZXMiLCByYW5nZT0gYygwLDEwKSksIAogICAgICAgICB5YXhpcz1saXN0KHRpdGxlPSJUaW1lcyBvZiBsaW1pdCBleGNlZWRlZCIpLCBiYXJtb2RlPSJzdGFjayIpCmBgYAo8cD5PdXIgZGF0YSBzaG93IHRoYXQgYXQgbGVhc3Qgb25lIGRlcHV0aWUgaGF2ZSBwYXNzZWQgaGlzIHN0YXRlIENFQVAgbGltaXQsIGJ1dCB0aGVyIGFyZSBzb21lIG1vc3QgZnJlcXVlbnQsIHdoaWNoIGFyZTo8L3A+Cjx1bD4KICA8bGk+RmVsaXBlIEJvcm5pZXIgPC9saT4KICA8bGk+RG9taW5nb3MgTmV0bzwvbGk+CiAgPGxpPkphbmRpcmEgRmVnaGFsaTwvbGk+CiAgPGxpPlBhdWxvIEFiaS1BY2tlbDwvbGk+CiAgPGxpPlLDtG11bG8gR292ZWlhPC9saT4KPC91bD4KCgojIyNXaGljaCBhcmUgdGhlIHN0YXRlcyB3aGl0IG1vcmUgZXhwZW5zZSBpbiBhaXJsaW5lIHRpY2tldHM/CgpXZSBhcmUgZ29pbmcgdG8gbG9vayBvbmx5IHRvIGV4cGVuc2VzIHdoaXQgdGhlIGRlc2NyaXB0aW9uIGFib3V0IGFpcmxpbmUgdGlja2VzLCBvbmNlIHdoaXQgdGhhdCBpbmZvcm1hdGlvbiB3ZSB3aWxsIHN1bSBhbGwgdmFsdWVzIGJ5IHN0YXRlcy4KYGBge3J9CmZseWllc19leHBlbnNlcyA8LSBkYXRhICU+JQogIGdyb3VwX2J5KHNnVUYpICU+JQogIGZpbHRlcih0aXBvRGVzcGVzYSA9PSAiRW1pc3PDo28gQmlsaGV0ZSBBw6lyZW8iLCB2YWxvckzDrXF1aWRvID49IDApICU+JQogIHN1bW1hcmlzZShleHBlbnNlID0gc3VtKHZhbG9yTMOtcXVpZG8pKQoKZmx5aWVzX2V4cGVuc2VzJHNnVUYgPC0gZmFjdG9yKGZseWllc19leHBlbnNlcyRzZ1VGLCBsZXZlbHMgPSBmbHlpZXNfZXhwZW5zZXMkc2dVRltvcmRlcihmbHlpZXNfZXhwZW5zZXMkZXhwZW5zZSldKQpnZ3Bsb3QoZmx5aWVzX2V4cGVuc2VzLCBhZXMoeCA9IHNnVUYsIHkgPSBleHBlbnNlKSkgKyB0aGVtZV9idygpICsgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKSArCiAgbGFicyh0aXRsZSA9ICJTdGF0ZSB3aGl0IGl0cyBlcGVuc2VzIHdoaXQgYWlybGluZSB0aWNrZXRzIiwKICAgICAgIHggPSAiVmFsdWUgaW4gUiQiLCB5ID0gIlN0YXRlIikKYGBgCgpTbyB3aGF0IHdlJ3ZlIGdvdCBpdCBTw6NvIFBhdWxvIGlzIHRoZSBzdGF0ZSB0aGF0IGV4cGVuZCBtb3JlIG1vbmV5IHRoZW4gdGhlIG90aGVyIHdoaXQgYWlsaW5lIHRpY2tldCwgYW5kIHRoZSB0b3RhbCBleHBlZW5kZWQgd2FzIGFib3V0IFIkIDIzMTcxODE3LjczIGFuZCBSaW8gZGUgSmFuZWlybyB3aGl0IFIkMTY3NTUxODguNjQKCiMjI0Nob3NlIHRocmVlIGdyb3VwcyBhbmQgYW5zd2VyOiB3aGljaCBhcmUgdGhlIG1vc3QgdXNlZCBleHBlbnNlcyBpbiBDRUFQIGJ5IHRoZSBkZXB1dGllcyBmb3JtIHRob3NlIGdyb3Vwcz8KCkdvbm5hIGNob3NlIFBNREIsIFBUIGFuZCBERU0gYW5kIHRha2UgYSBjbG9zZSBsb29rIGluIGl0cyBleHBlbnNlcy4KCmBgYHtyfQpleHBlbnNlX21vc3RfcmVxdWlyZWQgPC0gZGF0YSAlPiUKICBncm91cF9ieSh0aXBvRGVzcGVzYSkgJT4lCiAgZmlsdGVyKHNnUGFydGlkbyAlaW4lIGMoIlBNREIiLCAiUFQiLCAiREVNIiksIHZhbG9yTMOtcXVpZG8gPj0gMCkgJT4lCiAgc3VtbWFyaXNlKGV4cGVuc2UgPSBzdW0odmFsb3JMw61xdWlkbykpCgpleHBlbnNlX21vc3RfcmVxdWlyZWQkdGlwb0Rlc3Blc2EgPC0gZmFjdG9yKGV4cGVuc2VfbW9zdF9yZXF1aXJlZCR0aXBvRGVzcGVzYSwgbGV2ZWxzID0gZXhwZW5zZV9tb3N0X3JlcXVpcmVkJHRpcG9EZXNwZXNhW29yZGVyKGV4cGVuc2VfbW9zdF9yZXF1aXJlZCRleHBlbnNlKV0pCgpnZ3Bsb3QoZXhwZW5zZV9tb3N0X3JlcXVpcmVkLCBhZXMoeSA9IGV4cGVuc2UsIHggPSByZW9yZGVyKHRpcG9EZXNwZXNhLCBleHBlbnNlKSkpICsgb3JkZXIoZGVjcmVhc2luZyA9IFRSVUUpICsgc2NhbGVfeV9jb250aW51b3VzKGxhYmVscyA9IGNvbW1hKSArCiAgZ2VvbV9iYXIoc3RhdD0iaWRlbnRpdHkiKSArCiAgbGFicyh0aXRsZSA9ICJHcnVwcyBFeHBlbnNlcyIsCiAgICAgICB4ID0gIkdydXBzIiwgeSA9ICJFeHBlbnNlcyBpbiBSJCIpICsKICBjb29yZF9mbGlwKCkgCgpleHBlbnNlX21vc3RfcmVxdWlyZWQgJT4lCiAgcGxvdF9seSh5ID0gfnJlb3JkZXIodGlwb0Rlc3Blc2EsZXhwZW5zZSksIHggPSB+ZXhwZW5zZSwgdHlwZSA9ICJiYXIiLCBjb2xvciA9IH50aXBvRGVzcGVzYSkgJT4lCiAgbGF5b3V0KHRpdGxlID0gIkV4cGVuc2VzIGJ5IHRoZSBncm91cHMgUE1EQiwgUFQgYW5kIERFTSIsCiAgICAgICAgIHlheGlzID0gbGlzdCh0aXRsZSA9ICJFeHBlbnNlcyIpLAogICAgICAgICB4YXhpcyA9IGxpc3QgKHRpdGxlID0gIlRvdGFsIGV4cGVuZGVzIGluIFIkIikpCmBgYAoxMiBkaWZlcmVudGVzIHR5cGVzIG9mIGV4cGVuc2VzIGFuZCBhcyBmYXIgd2UgY2FuIHNlZSB0aGUgbW9zdCBleHBlbnNpY2UgaXMgYWlybGluZSB0aWNrZXRzIHdoaXQgUiQgNDczNTMxODkuNjIgYW5kIHZlcnkgbmVhciB3ZSBnb3QgZGVwdXRpZXMgYWN0aXZpdGllcyBwdWJsaWNpdGllcyB3aGl0IFIkIDQwMTE5NDgwLjMzCg==